A software development process may include a planning process to determine the requirements of a software application or system, a design process that includes developing functional units and writing source code, and a testing process to validate and verify that a particular functional unit, application, and/or software system is functioning properly. Software testing may be used to uncover defects (i.e., “software bugs”) and/or to determine whether the software under testing satisfies particular requirements, such as testability, maintainability, usability, performance, and/or security requirements.